Q22. Do you do any of the following when you have influenza symptoms?
# subset question data, rename columns, gather into single column
q22_df <- df %>%
select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q22_1:Q22_9, weight) %>%
rename("Q22_1_Go.to.a.doctor_s.office.or.medical.clinic" = Q22_1,
"Q22_2_Decide.on.treatment.without.consulting.a.health.practitioner" = Q22_2,
"Q22_3_Search.the.internet.for.a.treatment" = Q22_3,
"Q22_4_Get.adequate.sleep" = Q22_4,
"Q22_5_Eat.nutritious.food" = Q22_5,
"Q22_6_Take-over-counter.medication.for.symptoms" = Q22_6,
"Q22_7_Take.an.antiviral.medicine" = Q22_7,
"Q22_8_Take.no.action.to.treat.the.illness" = Q22_8,
"Q22_9_Other" = Q22_9) %>%
gather(Q22_q, Q22_r, Q22_1_Go.to.a.doctor_s.office.or.medical.clinic:Q22_8_Take.no.action.to.treat.the.illness,
na.rm = T) %>%
mutate(Q22_q = as.factor(Q22_q))%>%
mutate(Q22_r = factor(Q22_r, levels = c("Always", "Sometimes", "Never")))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des22 <- svydesign(ids = ~1, weights = ~weight, data = q22_df[is.na(q22_df$weight)==F, ])
# weighted data frame
q22 <- data.frame(svytable(~Q22_q + Q22_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des22, round = T))
# plot templates
title <- ggtitle("Do you do any of the following when you have influenza symptoms?")
## main plot
p <- ggplot(q22, aes(Q22_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q22_r) + title + coord_flip()

p2 <- ggplot(q22, aes(Q22_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q22_q, fill = Q22_r) + coord_flip()

p2 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_wrap(~Q22_q) + ptext2

p2 + geom_bar() + aes(Q22_q, fill = Q22_q) + facet_wrap(~Q22_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = PPGENDER) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPGENDER) + facet_wrap(~Q22_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q22_q~Q22_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = ppagecat) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = ppagecat) + facet_wrap(~Q22_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q22_q~Q22_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = PPETHM) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPETHM) + facet_wrap(~Q22_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q22_q~Q22_r) + ptext2

p2 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_grid(Q22_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q22_r) + facet_wrap(~Q22_q) + ptext2

p2 + geom_bar() + aes(Q22_q, fill = PPINCIMP) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPINCIMP) + facet_wrap(~Q22_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q22_q~Q22_r) + ptext2

Education, work, marital status
# update weighted data frame
q22.2 <- data.frame(svytable(~Q22_q + Q22_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des22, round = T))
# restate plots
p3 <- ggplot(q22.2, aes(Q22_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q22_r) + facet_wrap(~Q22_q)

p3 + geom_bar() + aes(Q22_q, fill = PPEDUCAT) + facet_wrap(~Q22_r)

p3 + geom_bar(position = "fill") + aes(Q22_q, fill = PPEDUCAT) + facet_wrap(~Q22_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q22_q~Q22_r) + ptext2

p3 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_grid(Q22_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q22_r) + facet_wrap(~Q22_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q22_r) + facet_wrap(~Q22_q)

Metro status, region, state, house type, housing status, internet availability
# update weighted data frame
q22.3 <- data.frame(svytable(~Q22_q + Q22_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des22, round = T))
# restate plots
p4 <- ggplot(q22.3, aes(Q22_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPMSACAT) + facet_wrap(~Q22_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q22_r) + facet_wrap(~Q22_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = ppreg9) + facet_wrap(~Q22_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q22_r, fill = PPSTATEN) + facet_wrap(~Q22_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q22_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPHOUSE) + facet_wrap(~Q22_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPHOUSE) + facet_wrap(~Q22_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPNET) + facet_wrap(~Q22_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By internet availability")

Q23. Which of the following actions do you take when you have influenza symptoms to avoid someone else from getting sick?
# subset question data, rename columns, gather into single column
q23_df <- df %>%
select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q23_1:Q23_11, weight) %>%
gather(Q23_q, Q23_r, Q23_1:Q23_11, na.rm = T) %>%
mutate(Q23_q = as.factor(Q23_q))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des23 <- svydesign(ids = ~1, weights = ~weight, data = q23_df[is.na(q23_df$weight)==F, ])
Gender, age, ethnicity, income
# weighted data frame
q23 <- data.frame(svytable(~Q23_q + Q23_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des23, round = T))
# plot templates
title <- ggtitle("Which of the following actions do you take when you have influenza symptoms to avoid someone else from getting sick?")
## main plot
p <- ggplot(q23, aes(Q23_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q23_r) + title

p2 <- ggplot(q23, aes(Q23_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q23_q, fill = Q23_r)

p2 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_wrap(~Q23_q) + ptext2

p2 + geom_bar() + aes(Q23_q, fill = Q23_q) + facet_wrap(~Q23_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = PPGENDER) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPGENDER) + facet_wrap(~Q23_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q23_q~Q23_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = ppagecat) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = ppagecat) + facet_wrap(~Q23_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q23_q~Q23_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = PPETHM) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPETHM) + facet_wrap(~Q23_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q23_q~Q23_r) + ptext2

p2 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_grid(Q23_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q23_r) + facet_wrap(~Q23_q) + ptext2

p2 + geom_bar() + aes(Q23_q, fill = PPINCIMP) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPINCIMP) + facet_wrap(~Q23_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q23_q~Q23_r) + ptext2

Education, work, marital status
# update weighted data frame
q23.2 <- data.frame(svytable(~Q23_q + Q23_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des23, round = T))
# restate plots
p3 <- ggplot(q23.2, aes(Q23_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q23_r) + facet_wrap(~Q23_q)

p3 + geom_bar() + aes(Q23_q, fill = PPEDUCAT) + facet_wrap(~Q23_r)

p3 + geom_bar(position = "fill") + aes(Q23_q, fill = PPEDUCAT) + facet_wrap(~Q23_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q23_q~Q23_r) + ptext2

p3 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_grid(Q23_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q23_r) + facet_wrap(~Q23_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q23_r) + facet_wrap(~Q23_q)

Metro status, region, state, house type, housing status, internet availability
# update weighted data frame
q23.3 <- data.frame(svytable(~Q23_q + Q23_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des23, round = T))
# restate plots
p4 <- ggplot(q23.3, aes(Q23_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPMSACAT) + facet_wrap(~Q23_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q23_r) + facet_wrap(~Q23_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = ppreg9) + facet_wrap(~Q23_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q23_r, fill = PPSTATEN) + facet_wrap(~Q23_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q23_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPHOUSE) + facet_wrap(~Q23_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPHOUSE) + facet_wrap(~Q23_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPNET) + facet_wrap(~Q23_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By internet availability")

LS0tCnRpdGxlOiAnUTIyLTIzJwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogCiAgICB0aGVtZTogcGFwZXIKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDIKICBodG1sX2RvY3VtZW50OgogICAgZmlnX2hlaWdodDogNQogICAgZmlnX3dpZHRoOiA3CiAgICB0aGVtZTogcGFwZXIKICAgIGtlZXBfbWQ6IHllcwogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogMgotLS0KClF1ZXN0aW9ucyAyMiwgMjMsIDI1CgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GfQojIyBTZXR1cC4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBULCBjYWNoZSA9IFQsIGNhY2hlLmNvbW1lbnRzID0gRiwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBzaXplID0gInNtYWxsIikKcm0obGlzdCA9IGxzKGFsbC5uYW1lcyA9IFQpKQpsaWJyYXJ5KHJtYXJrZG93bik7IGxpYnJhcnkoa25pdHIpOyBsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeSh0aWR5cik7IGxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KHN1cnZleSkKYGBgCgpgYGB7ciBsb2FkLWRhdGEsIGluY2x1ZGU9Rn0KIyMgTG9hZCBkYXRhLgpsb2FkKCJ+L2dpdC9mbHUtc3VydmV5L2RhdGEvY2xlYW5pbmcyLlJEYXRhIikKbG9hZCgifi9naXQvZmx1LXN1cnZleS9kYXRhL3JlY29kaW5nLlJEYXRhIikgICMgbG9hZCAiZGF0YXIiCmRmIDwtIGRhdGFyICAjIHJlY29kZWQgdmFyaWFibGVzCmBgYAoKYGBge3IgZ3JvdXAtZGF0YSwgaW5jbHVkZT1GfQojIyBSZWdyb3VwIHZhcmlhYmxlcy4KIyBpbmNvbWUKaW5jb21lLm1hcCA8LSBjKHJlcCgidW5kZXIgJDEwayIsIDMpLCByZXAoIiQxMGsgdG8gJDI1ayIsIDQpLAogICAgICAgICAgICAgICAgcmVwKCIkMjVrIHRvICQ1MGsiLCA0KSwgcmVwKCIkNTBrIHRvICQ3NWsiLCAyKSwKICAgICAgICAgICAgICAgIHJlcCgiJDc1ayB0byAkMTAwayIsIDIpLCByZXAoIiQxMDBrIHRvICQxNTBrIiwgMiksCiAgICAgICAgICAgICAgICByZXAoIm92ZXIgJDE1MGsiLCAyKSkKZGYkaW5jb21lIDwtIGNvZGUoZGF0YXIkUFBJTkNJTVAsIGluY29tZS5tYXAsICJ1bmRlciAkMTBrIikKaW5jb21lLmxhYiA8LSBjKCJ1bmRlciAkMTBrIiwgIiQxMGsgdG8gJDI1ayIsICIkMjVrIHRvICQ1MGsiLAogICAgICAgICAgICAgICAgIiQ1MGsgdG8gJDc1ayIsICIkNzVrIHRvICQxMDBrIiwgIiQxMDBrIHRvICQxNTBrIiwKICAgICAgICAgICAgICAgICJvdmVyICQxNTBrIikKZGYkaW5jb21lIDwtIGZhY3RvcihkZiRpbmNvbWUsIGxldmVscyA9IGluY29tZS5sYWIpCgojIG1hcml0YWwgc3RhdXMKbWFyaXRhbC5tYXAgPC0gYygic2luZ2xlIiwgInBhcnRuZXJlZCIsICJwYXJ0bmVyZWQiLCAic2luZ2xlIiwgInNpbmdsZSIsICJzaW5nbGUiKQpkZiRtYXJpdGFsIDwtIGNvZGUoZGF0YWYkUFBNQVJJVCwgbWFyaXRhbC5tYXAsICJzaW5nbGUiKQoKIyB3b3JrIHN0YXR1cwp3b3JrLm1hcCA8LSBjKHJlcCgidW5lbXBsb3llZCIsIDUpLAogICAgICAgICAgICAgIHJlcCgiZW1wbG95ZWQiLCAyKSkKZGYkd29yayA8LSBjb2RlKGRhdGFmJFBQV09SSywgd29yay5tYXAsICJ1bmVtcGxveWVkIikKYGBgCgpgYGB7ciBkZXMtc3VydmV5fQojIyBDcmVhdGUgc3VydmV5IG9iamVjdC4Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCgpkZXMgPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCB3ZWlnaHRzID0gfndlaWdodCwgZGF0YSA9IGRmW2lzLm5hKGRmJHdlaWdodCk9PUYsIF0pCmBgYAoKYGBge3IgcGxvdC10ZW1wLCBpbmNsdWRlPUZ9CiMjIENyZWF0ZSBnZ3Bsb3QgdGVtcGxhdGVzLgpwdGV4dCA8LSB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgwLjkpKSwKICAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKcHRleHQyIDwtIHB0ZXh0ICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpCmBgYAoKCiMjIFEyMi4gRG8geW91IGRvIGFueSBvZiB0aGUgZm9sbG93aW5nIHdoZW4geW91IGhhdmUgaW5mbHVlbnphIHN5bXB0b21zPwoKCmBgYHtyIHEyMi1kYXRhfQojIHN1YnNldCBxdWVzdGlvbiBkYXRhLCByZW5hbWUgY29sdW1ucywgZ2F0aGVyIGludG8gc2luZ2xlIGNvbHVtbgpxMjJfZGYgPC0gZGYgJT4lCiAgc2VsZWN0KENhc2VJRCwgUFBHRU5ERVIsIFBQQUdFLCBwcGFnZWNhdCwgUFBFVEhNLCBQUElOQ0lNUCwgUFBFRFVDLCBQUEVEVUNBVCwKICAgICAgICAgd29yaywgUFBXT1JLLCBtYXJpdGFsLCBQUE1BUklULCBQUE1TQUNBVCwgcHByZWc5LCBQUFNUQVRFTiwgUFBIT1VTRSwgUFBSRU5ULCBQUE5FVCwgUTIyXzE6UTIyXzksIHdlaWdodCkgJT4lCiAgcmVuYW1lKCJRMjJfMV9Hby50by5hLmRvY3Rvcl9zLm9mZmljZS5vci5tZWRpY2FsLmNsaW5pYyIgPSBRMjJfMSwKICAgICAgICAgIlEyMl8yX0RlY2lkZS5vbi50cmVhdG1lbnQud2l0aG91dC5jb25zdWx0aW5nLmEuaGVhbHRoLnByYWN0aXRpb25lciIgPSBRMjJfMiwKICAgICAgICAgIlEyMl8zX1NlYXJjaC50aGUuaW50ZXJuZXQuZm9yLmEudHJlYXRtZW50IiA9IFEyMl8zLAogICAgICAgICAiUTIyXzRfR2V0LmFkZXF1YXRlLnNsZWVwIiA9IFEyMl80LAogICAgICAgICAiUTIyXzVfRWF0Lm51dHJpdGlvdXMuZm9vZCIgPSBRMjJfNSwKICAgICAgICAgIlEyMl82X1Rha2Utb3Zlci1jb3VudGVyLm1lZGljYXRpb24uZm9yLnN5bXB0b21zIiA9IFEyMl82LAogICAgICAgICAiUTIyXzdfVGFrZS5hbi5hbnRpdmlyYWwubWVkaWNpbmUiID0gUTIyXzcsCiAgICAgICAgICJRMjJfOF9UYWtlLm5vLmFjdGlvbi50by50cmVhdC50aGUuaWxsbmVzcyIgPSBRMjJfOCwKICAgICAgICAgIlEyMl85X090aGVyIiA9IFEyMl85KSAlPiUKICBnYXRoZXIoUTIyX3EsIFEyMl9yLCBRMjJfMV9Hby50by5hLmRvY3Rvcl9zLm9mZmljZS5vci5tZWRpY2FsLmNsaW5pYzpRMjJfOF9UYWtlLm5vLmFjdGlvbi50by50cmVhdC50aGUuaWxsbmVzcywKICAgICAgICAgbmEucm0gPSBUKSAlPiUKICBtdXRhdGUoUTIyX3EgPSBhcy5mYWN0b3IoUTIyX3EpKSU+JQogIG11dGF0ZShRMjJfciA9IGZhY3RvcihRMjJfciwgbGV2ZWxzID0gYygiQWx3YXlzIiwgIlNvbWV0aW1lcyIsICJOZXZlciIpKSkKCgojIHN1cnZleSBkZXNpZ24Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCmRlczIyIDwtIHN2eWRlc2lnbihpZHMgPSB+MSwgd2VpZ2h0cyA9IH53ZWlnaHQsIGRhdGEgPSBxMjJfZGZbaXMubmEocTIyX2RmJHdlaWdodCk9PUYsIF0pCmBgYAoKYGBge3IgcTIyLXBsb3QtMSwgZmlnLmhlaWdodD0zLCBmaWcud2lkdGg9OH0KIyB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMiA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMjJfcSArIFEyMl9yICsgUFBHRU5ERVIgKyBwcGFnZWNhdCArIFBQRVRITSArIFBQSU5DSU1QLCBkZXMyMiwgcm91bmQgPSBUKSkKCiMgcGxvdCB0ZW1wbGF0ZXMKdGl0bGUgPC0gZ2d0aXRsZSgiRG8geW91IGRvIGFueSBvZiB0aGUgZm9sbG93aW5nIHdoZW4geW91IGhhdmUgaW5mbHVlbnphIHN5bXB0b21zPyIpCgojIyBtYWluIHBsb3QKcCA8LSBnZ3Bsb3QocTIyLCBhZXMoUTIyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoZmlsbCA9IFEyMl9yKSArIHRpdGxlICsgY29vcmRfZmxpcCgpCgpgYGAKCgpgYGB7ciBxMjItcGxvdC0xYiwgZmlnLmhlaWdodD00LCBmaWcud2lkdGg9OH0KcDIgPC0gZ2dwbG90KHEyMiwgYWVzKFEyMl9xLCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dApwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjJfcSwgZmlsbCA9IFEyMl9yKSArIGNvb3JkX2ZsaXAoKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIyX3IsIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyMl9xLCBmaWxsID0gUTIyX3EpICsgZmFjZXRfd3JhcCh+UTIyX3IpICsgcHRleHQyCgpgYGAKCgpgYGB7cn0KIyBieSBnZW5kZXIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFEyMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIyX3IpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfZ3JpZChRMjJfcX5RMjJfcikgKyBjb29yZF9mbGlwKCkgKyBwdGV4dDIKYGBgCgoKYGBge3J9CiMgYnkgYWdlIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCmBgYAoKCmBgYHtyfQojIGJ5IGV0aG5pYyBncm91cApwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF93cmFwKH5RMjJfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTIyX3EsIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfd3JhcCh+UTIyX3IpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQRVRITSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF9ncmlkKFEyMl9xflEyMl9yKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIyX3IsIGZpbGwgPSBRMjJfcikgKyBmYWNldF9ncmlkKFEyMl9xflBQRVRITSkgKyBwdGV4dDIKYGBgCgoKYGBge3J9CiMgYnkgaW5jb21lCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGluY29tZSIpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGluY29tZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCgpgYGAKCiMjIyBFZHVjYXRpb24sIHdvcmssIG1hcml0YWwgc3RhdHVzCgpgYGB7ciBxMjItcGxvdC0yfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMi4yIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyMl9xICsgUTIyX3IgKyBQUEVEVUMgKyBQUEVEVUNBVCArIHdvcmsgKyBQUFdPUksgKyBtYXJpdGFsICsgUFBNQVJJVCwgZGVzMjIsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDMgPC0gZ2dwbG90KHEyMi4yLCBhZXMoUTIyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTIyLXBsb3QtMmJ9CiMgYnkgZWR1Y2F0aW9uCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfciwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X2dyaWQoUTIyX3F+UFBFRFVDQVQpICsgcHRleHQyCmBgYAoKCmBgYHtyfQojIGJ5IHdvcmsKcDMgKyBnZW9tX2JhcigpICsgYWVzKHdvcmssIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBlbXBsb3ltZW50IHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHdvcmssIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkKYGBgCgoKYGBge3J9CiMgYnkgbWFyaXRhbApwMyArIGdlb21fYmFyKCkgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IG1hcml0YWwgc3RhdHVzIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKQoKYGBgCgojIyMgTWV0cm8gc3RhdHVzLCByZWdpb24sIHN0YXRlLCBob3VzZSB0eXBlLCBob3VzaW5nIHN0YXR1cywgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CgpgYGB7ciBxMjItcGxvdC0zfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMi4zIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyMl9xICsgUTIyX3IgKyBQUE1TQUNBVCArIHBwcmVnOSArIFBQU1RBVEVOICsgUFBIT1VTRSArIFBQUkVOVCArIFBQTkVULCBkZXMyMiwgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwNCA8LSBnZ3Bsb3QocTIyLjMsIGFlcyhRMjJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMjItcGxvdC0zYn0KIyBieSBtZXRybyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIyX3IsIGZpbGwgPSBQUE1TQUNBVCkgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBtZXRybyBzdGF0dXMiKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE1TQUNBVCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKQoKIyBieSByZWdpb24KcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIyX3IsIGZpbGwgPSBwcHJlZzkpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgcmVnaW9uIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKHBwcmVnOSwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCgojIGJ5IHN0YXRlCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfciwgZmlsbCA9IFBQU1RBVEVOKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQU1RBVEVOLCBmaWxsID0gUTIyX3EpICsgY29vcmRfZmxpcCgpICsgZ2d0aXRsZSgiQnkgc3RhdGUiKQpgYGAKCgpgYGB7cn0KIyBieSBob3VzZSB0eXBlCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjJfcSkKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoZmlsbCA9IFBQSE9VU0UpICsgZ2d0aXRsZSgiQnkgaG91c2UgdHlwZSIpCgojIGhvdXNpbmcgc3RhdHVzCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjJfcSkKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQSE9VU0UsIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBob3VzaW5nIikKCiMgYnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBORVQpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQTkVULCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5IikKCmBgYAoKCgoKCiMjIFEyMy4gV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGRvIHlvdSB0YWtlIHdoZW4geW91IGhhdmUgaW5mbHVlbnphIHN5bXB0b21zIHRvIGF2b2lkIHNvbWVvbmUgZWxzZSBmcm9tIGdldHRpbmcgc2ljaz8KCmBgYHtyIHEyMy1kYXRhfQojIHN1YnNldCBxdWVzdGlvbiBkYXRhLCByZW5hbWUgY29sdW1ucywgZ2F0aGVyIGludG8gc2luZ2xlIGNvbHVtbgpxMjNfZGYgPC0gZGYgJT4lCiAgc2VsZWN0KENhc2VJRCwgUFBHRU5ERVIsIFBQQUdFLCBwcGFnZWNhdCwgUFBFVEhNLCBQUElOQ0lNUCwgUFBFRFVDLCBQUEVEVUNBVCwKICAgICAgICAgd29yaywgUFBXT1JLLCBtYXJpdGFsLCBQUE1BUklULCBQUE1TQUNBVCwgcHByZWc5LCBQUFNUQVRFTiwgUFBIT1VTRSwgUFBSRU5ULCBQUE5FVCwgUTIzXzE6UTIzXzExLCB3ZWlnaHQpICU+JQogIGdhdGhlcihRMjNfcSwgUTIzX3IsIFEyM18xOlEyM18xMSwgbmEucm0gPSBUKSAlPiUKICBtdXRhdGUoUTIzX3EgPSBhcy5mYWN0b3IoUTIzX3EpKQoKIyBzdXJ2ZXkgZGVzaWduCm9wdGlvbnMoZGlnaXRzID0gNCkKb3B0aW9ucyhzdXJ2ZXkubG9uZWx5LnBzdSA9ICJhZGp1c3QiKQpkZXMyMyA8LSBzdnlkZXNpZ24oaWRzID0gfjEsIHdlaWdodHMgPSB+d2VpZ2h0LCBkYXRhID0gcTIzX2RmW2lzLm5hKHEyM19kZiR3ZWlnaHQpPT1GLCBdKQpgYGAKCiMjIyBHZW5kZXIsIGFnZSwgZXRobmljaXR5LCBpbmNvbWUKCmBgYHtyIHEyMy1wbG90LTF9CiMgd2VpZ2h0ZWQgZGF0YSBmcmFtZQpxMjMgPC0gZGF0YS5mcmFtZShzdnl0YWJsZSh+UTIzX3EgKyBRMjNfciArIFBQR0VOREVSICsgcHBhZ2VjYXQgKyBQUEVUSE0gKyBQUElOQ0lNUCwgZGVzMjMsIHJvdW5kID0gVCkpCgojIHBsb3QgdGVtcGxhdGVzCnRpdGxlIDwtIGdndGl0bGUoIldoaWNoIG9mIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBkbyB5b3UgdGFrZSB3aGVuIHlvdSBoYXZlIGluZmx1ZW56YSBzeW1wdG9tcyB0byBhdm9pZCBzb21lb25lIGVsc2UgZnJvbSBnZXR0aW5nIHNpY2s/IikKCiMjIG1haW4gcGxvdApwIDwtIGdncGxvdChxMjMsIGFlcyhRMjNfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKcCArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhmaWxsID0gUTIzX3IpICsgdGl0bGUKYGBgCgpgYGB7ciBxMjMtcGxvdC0xYn0KcDIgPC0gZ2dwbG90KHEyMywgYWVzKFEyM19xLCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dApwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjNfcSwgZmlsbCA9IFEyM19yKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIzX3IsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gUTIzX3EpICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgcHRleHQyCgojIGJ5IGdlbmRlcgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBnZW5kZXIiKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUEdFTkRFUiwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIzX3EsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF93cmFwKH5RMjNfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTIzX3EsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF93cmFwKH5RMjNfcikgKyBnZ3RpdGxlKCJCeSBnZW5kZXIiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF9ncmlkKFEyM19xflEyM19yKSArIGNvb3JkX2ZsaXAoKSArIHB0ZXh0MgoKIyBieSBhZ2UgZ3JvdXAKcDIgKyBnZW9tX2JhcigpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgYWdlIGdyb3VwIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMocHBhZ2VjYXQsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfd3JhcCh+UTIzX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFEyM19xLCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgZ2d0aXRsZSgiQnkgYWdlIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfZ3JpZChRMjNfcX5RMjNfcikgKyBwdGV4dDIKCiMgYnkgZXRobmljIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBldGhuaWMgZ3JvdXAiKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X3dyYXAoflEyM19yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF93cmFwKH5RMjNfcikgKyBnZ3RpdGxlKCJCeSBldGhuaWMgZ3JvdXAiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBFVEhNLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X2dyaWQoUTIzX3F+UTIzX3IpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfciwgZmlsbCA9IFEyM19yKSArIGZhY2V0X2dyaWQoUTIzX3F+UFBFVEhNKSArIHB0ZXh0MgpgYGAKCgpgYGB7cn0KIyBieSBpbmNvbWUKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgaW5jb21lIikgKyBwdGV4dDIKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBJTkNJTVAsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTIzX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFEyM19xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgZ2d0aXRsZSgiQnkgaW5jb21lIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfZ3JpZChRMjNfcX5RMjNfcikgKyBwdGV4dDIKCmBgYAoKIyMjIEVkdWNhdGlvbiwgd29yaywgbWFyaXRhbCBzdGF0dXMKCmBgYHtyIHEyMy1wbG90LTJ9CiMgdXBkYXRlIHdlaWdodGVkIGRhdGEgZnJhbWUKcTIzLjIgPC0gZGF0YS5mcmFtZShzdnl0YWJsZSh+UTIzX3EgKyBRMjNfciArIFBQRURVQyArIFBQRURVQ0FUICsgd29yayArIFBQV09SSyArIG1hcml0YWwgKyBQUE1BUklULCBkZXMyMywgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwMyA8LSBnZ3Bsb3QocTIzLjIsIGFlcyhRMjNfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMjMtcGxvdC0yYn0KIyBieSBlZHVjYXRpb24KcDMgKyBnZW9tX2JhcigpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgZWR1Y2F0aW9uIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBFRFVDQVQsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkKcDMgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfd3JhcCh+UTIzX3IpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyM19xLCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgZ2d0aXRsZSgiQnkgZWR1Y2F0aW9uIikKcDMgKyBnZW9tX2JhcigpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfZ3JpZChRMjNfcX5RMjNfcikgKyBwdGV4dDIKcDMgKyBnZW9tX2JhcigpICsgYWVzKFEyM19yLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfZ3JpZChRMjNfcX5QUEVEVUNBVCkgKyBwdGV4dDIKYGBgCgpgYGB7cn0KIyBieSB3b3JrCnAzICsgZ2VvbV9iYXIoKSArIGFlcyh3b3JrLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgZW1wbG95bWVudCBzdGF0dXMiKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyh3b3JrLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpCmBgYAoKYGBge3J9CiMgYnkgbWFyaXRhbApwMyArIGdlb21fYmFyKCkgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IG1hcml0YWwgc3RhdHVzIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKQoKYGBgCgojIyMgTWV0cm8gc3RhdHVzLCByZWdpb24sIHN0YXRlLCBob3VzZSB0eXBlLCBob3VzaW5nIHN0YXR1cywgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CgpgYGB7ciBxMjMtcGxvdC0zfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMy4zIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyM19xICsgUTIzX3IgKyBQUE1TQUNBVCArIHBwcmVnOSArIFBQU1RBVEVOICsgUFBIT1VTRSArIFBQUkVOVCArIFBQTkVULCBkZXMyMywgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwNCA8LSBnZ3Bsb3QocTIzLjMsIGFlcyhRMjNfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMjMtcGxvdC0zYn0KIyBieSBtZXRybyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIzX3IsIGZpbGwgPSBQUE1TQUNBVCkgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBtZXRybyBzdGF0dXMiKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE1TQUNBVCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKQpgYGAKCmBgYHtyfQojIGJ5IHJlZ2lvbgpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjNfciwgZmlsbCA9IHBwcmVnOSkgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSByZWdpb24iKQpwNCArIGdlb21fYmFyKCkgKyBhZXMocHByZWc5LCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgcmVnaW9uIikKCiMgYnkgc3RhdGUKcDQgKyBnZW9tX2JhcigpICsgYWVzKFEyM19yLCBmaWxsID0gUFBTVEFURU4pICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgc3RhdGUiKQpwNCArIGdlb21fYmFyKCkgKyBhZXMoUFBTVEFURU4sIGZpbGwgPSBRMjNfcSkgKyBjb29yZF9mbGlwKCkgKyBnZ3RpdGxlKCJCeSBzdGF0ZSIpCmBgYAoKYGBge3J9CiMgYnkgaG91c2UgdHlwZQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjNfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKGZpbGwgPSBQUEhPVVNFKSArIGdndGl0bGUoIkJ5IGhvdXNlIHR5cGUiKQoKIyBob3VzaW5nIHN0YXR1cwpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjNfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhQUEhPVVNFLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgaG91c2luZyIpCmBgYAoKYGBge3J9CiMgYnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyM19yLCBmaWxsID0gUFBORVQpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQTkVULCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5IikKCmBgYAoKCgoK